The present invention relates generally to the field of data processing and, more particularly, to methods and apparatus for platform-independent transmission of information among computer systems.
Today, most computers are linked to other computer systems via a computer network. Well-known examples of computer networks include local-area networks (LANs) where the computers are geographically close together (e.g., in the same building), and wide-area networks (WANs) which the computers are farther apart and are connected by telephone lines or radio waves.
Often, networks are configured as "client/server" networks, such that each computer on the network is either a "client" or a "server." Servers are powerful computers or processes dedicated to managing shared resources, such as storage (i.e., disk drives), printers, modems, or the like. Servers are often dedicated, meaning that they perform no other tasks besides their server tasks. For instance, a database server is a computer system that manages database information, including processing database queries from various clients.
The client part of this client-server architecture typically comprises PCs or workstations which rely on a server to perform some operations. Typically, a client runs a "client application" that relies on a server to perform some operations, such as returning particular database information. Often, client-server architecture is thought of as a "two-tier architecture," one in which the user interface runs on the client or "front end" and the database is stored on the server or "back end." The actual business rules or application logic driving operation of the application can run on either the client or the server (or even be partitioned between the two).
A newer client/server architecture, called a three-tier architecture, introduces three well-defined and separate processes, each typically running on a different platform:
1. First tier: The user interface, which runs on the user's computer (i.e., the client). PA1 2. Second tier: The functional modules that actually process data. This middle tier runs on a server and is often called the application server. PA1 3. Third tier: A database management system (DBMS) that stores the data required by the middle tier. This tier runs on a second server called the database server.
The three-tier design has many advantages over traditional two-tier or single-tier designs. For example, the added modularity makes it easier to modify or replace one tier without affecting the other tiers. Separating the application functions from the database functions makes it easier to implement load balancing. The three tiers do not necessarily represent three physical tiers, however, as all tiers could be implemented on a single machine. For example, an application server can run as a separate process on the same machine as a client application, with access being provided to local tables through a local database engine (e.g., Borland Database Engine or "BDE," available from Borland International, of Scotts Valley, Calif.).
When data is transmitted from the so-called middle tier to the client or server, a protocol is required. A particular problem arises when data is transmitted from one platform or media to another. With the explosive growth of the Internet and the World Wide Web, an ever-increasing number of computers of disparate platforms are being connected together each day, leading to an ever-increasing number of heterogeneous networked environments. In order for data to be transmitted effortlessly across platforms, a solution is needed which is not only independent of platform but is also independent of any communication protocol employed. Present-day solutions are tied to a particular platform. For instance, Microsoft DCOM (Distributed Common Object Model) is tied to the Windows platform and is, therefore, not well suited for other environments or platforms, such as Java-based environments. In order for data to be transmitted effortlessly across platforms, a solution is needed which is not only independent of platform but is also independent of any communication protocol employed.
Further, as computing becomes more distributed, there is increasing interest in implementing "thin client" solutions. A thin client is one in which resources required at the client machine are fairly nominal. The client is designed to be especially small so that the bulk of the data processing occurs on the server. Advantages of the thin client approach are numerous. For instance, a thin client generally requires less computational resources and, hence, can be implemented with less expensive machines (e.g., network computers). Also, a thin client typically maintains minimum business logic at the client, thus minimizing or eliminating the need to upgrade individual client machines when business logic changes. Therefore, transmission of data should occur in a manner which preserves thin client architecture--that is, a manner in which it is independent of data source. Here, a given client need not know the data types originally available on the server.